package com.agile.leetcode.innerclass.Internalinnerclass;

/**
 * 1 成员内部类
 * 成员内部类可以直接访问其所在的外部类的非静态成员变量和静态的成员变量
 * 外部类和内部类成员变量相同时: 获取的变量值采取的是就近原则
 * 成员内部类的成员方法可以访问其所在的外部类的所有成员方法（不论是否公有，不论是否静态）
 *
 * @Author:ChenZhangKun
 * @Date: 2021/10/11 11:40
 */
public class Outer {
    private static Integer i = 5;
    private Integer j = 4;

    private void fuck() {
        System.out.println("fuck");
    }

    /**
     * 定义成员内部类
     */
    class Inner {
        private Integer j = 3;

        public void print() {
            // 访问外部类静态成员
            System.out.println(i);
            // 就近原则
            System.out.println("j=" + j);
            // 访问外部内方法
            fuck();
        }
    }
}
